home *** CD-ROM | disk | FTP | other *** search
- {
- ML>Basically a function that allows me to have 3 lines at the top non scrollabl
- ML>(that I can change, the content of the lines), but so the stuff underthem
- ML>scrolles...
-
- Well, when you don't like the way the BIOS scrolls the screen, change
- the BIOS!
-
- Here's an interesting program that I just wrote for this purpose. It
- installs a TSR-like program that interferes with the BIOS scroll-up
- routine and forces the top to be a variable you set.
-
- While debugging the program, I ran into a bit of trouble with the way
- that TP handles interrupts. If you notice, half of the ISR has turned
- into restoring the registers that TP trashes!
- ========================================================================
- }
- Uses Dos, Crt; {Crt only used by main pgm}
-
- var
- TopLine : byte;
- V : STRING;
- OldInt : Procedure;
-
- {Procedure Catch is the actual ISR, filtering out BIOS SCROLL-UP commands, and
- forcing the top of the scroll to be the value [TopLine] }
-
- {$F+}
- procedure Catch(Flags, rCS, rIP, rAX, rBX, rCX, rDX, rSI, rDI, rDS, rES, rBP: WORD); INTERRUPT;
- { Procedure Catch; interrupt;}
- begin {Catch}
- asm
- MOV AX, Flags
- SAHF
- MOV AX, rAX
- MOV BX, rBX
- MOV CX, rCX
- MOV DX, rDX
- MOV SI, rSI
- MOV DI, rDI
- CMP AH, 06
- JNE @Pass
- CMP CH, TopLine
- JA @Pass
- MOV CH, TopLine
-
- @Pass:
- end;
- OldInt; {Pass through to old handler}
- asm
- MOV rAX, AX
- MOV rBX, BX
- MOV rCX, CX
- MOV rDX, DX
- MOV rSI, SI
- MOV rDI, DI
- end;
- end; {Catch}
- {$F-}
-
- Procedure Install;
- begin
- GetIntVec($10, Addr(OldInt));
- SetIntVec($10, Addr(Catch));
- end;
-
- Procedure DeInstall;
- begin
- SetIntVec($10, Addr(OldInt));
- end;
-
- FUNCTION ItisTrue : BOOLEAN;
- BEGIN
- ItisTrue := (V <> 'quit');
- END;
-
- begin
- ClrScr;
- DirectVideo := TRUE;
- TopLine := 5; {Keep 5+1 lines at top of screen}
- Install;
- GoToXY(1,24);
- WriteLn('Start Typing to see demo... type "quit" to stop ..');
- while Itistrue do readln(V);
- DeInstall;
- end.
- ====================================================================